
namespace ShoppingCart.Business.Logic
{
	using System;
	using System.Collections.Generic;
	using ShoppingCart.Business.Entity;
	using ShoppingCart.DataAccess;
    using ShoppingCart.Business.Entity.Collections;

	/// <summary>
	/// Represents the Manager of ProductoDepartamento.
	/// </summary>
	[Serializable]
	public class ProductoDepartamentoManager : Singleton<ProductoDepartamentoManager>
	{
		#region Methods

		/// <summary>
		/// Selects a single record from the ProductoDepartamento table.
		/// </summary>
		public PrecioStock Obtener(int idProducto, int idDepartamento)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.Obtener(idProducto, idDepartamento);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Selects all records from the ProductoDepartamento table by a foreign key.
		/// </summary>
		public ProductoCollection ListarPorIdDepartamento(int idDepartamento)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.ListarPorIdDepartamento(idDepartamento);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Selects all records from the ProductoDepartamento table by a foreign key.
		/// </summary>
        public PrecioStockCollection ListarPorIdProducto(int idProducto)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.ListarPorIdProducto(idProducto);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Saves a record to the ProductoDepartamento table.
		/// </summary>
		public int Agregar(PrecioStock productoDepartamento)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.Agregar(productoDepartamento);
			}
			catch (Exception) { throw; }
		}

        public int Agregar(PrecioStockCollection coleccion)
        {
            try
            {
                return ProductoDepartamentoData.Instancia.Agregar(coleccion);
            }
            catch (Exception) { throw; }
        }

	    /// <summary>
		/// Updates a record in the ProductoDepartamento table.
		/// </summary>
		public bool Modificar(PrecioStock productoDepartamento)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.Modificar(productoDepartamento);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the ProductoDepartamento table by its primary key.
		/// </summary>
		public bool Eliminar(int idProducto, int idDepartamento)
		{
			try
			{
				return ProductoDepartamentoData.Instancia.Eliminar(idProducto, idDepartamento);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the ProductoDepartamento table by a foreign key.
		/// </summary>
		public void EliminarPorIdDepartamento(int idDepartamento)
		{
			try
			{
				ProductoDepartamentoData.Instancia.EliminarPorIdDepartamento(idDepartamento);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the ProductoDepartamento table by a foreign key.
		/// </summary>
		public void EliminarPorIdProducto(int idProducto)
		{
			try
			{
				ProductoDepartamentoData.Instancia.EliminarPorIdProducto(idProducto);
			}
			catch (Exception) { throw; }
		}

		#endregion
	}
}
